package pe.com.sysaut.seguridad.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Repository;

import pe.com.sysaut.dao.impl.GenericDaoImpl;
import pe.com.sysaut.seguridad.dao.TpersonaDao;
import pe.com.sysaut.seguridad.domain.Tpersona;
import pe.com.sysaut.util.ConstanteSYSAUT;

@Repository
public class TpersonaDaoImpl extends GenericDaoImpl implements TpersonaDao {

	@Override
	public void insertPersona(Tpersona tpersona) {
		this.persist(tpersona);
	}

	@Override
	public List<Tpersona> findByFiltros(String dni, String nombre) {
		// TODO Auto-generated method stub
		
		String hql="FROM Tpersona "
				+ "WHERE  indEliminacion=? ";
		
		List<String> values=new ArrayList<String>();
		values.add(ConstanteSYSAUT.DEFAULT_CERO.toString());
		
		if (!dni.equals("")){
			hql+="AND numDni LIKE ? ";
			values.add("%"+dni+"%");
		}
		
		if (!nombre.equals("")){
			
			if (dni.equals("")){
				hql+="AND nomPersona LIKE ?";
			}
			else{
				hql+="AND nomPersona LIKE ?";
			}
			values.add("%"+nombre+"%");
			
		}
		
		List<Tpersona> lsTpersonas;
		
		if(!dni.equals("") || !nombre.equals("")){
			Object[] objValues=values.toArray();
			lsTpersonas=this.findByHql(hql, objValues);
		}
		else{
			Object[] objValues=values.toArray();
			lsTpersonas=this.findByHql(hql,objValues);
		}
		
		if (lsTpersonas!=null){
			if (!lsTpersonas.isEmpty()){
				return lsTpersonas;
			}
		}
		
		
		return new ArrayList<Tpersona>();
	}

	@Override
	public Tpersona findByPK(String pk) {
		// TODO Auto-generated method stub
		String hql="FROM Tpersona WHERE numDni=? "
				+ "AND indEliminacion=?";
		
		Object[] values={pk,ConstanteSYSAUT.DEFAULT_CERO.toString()};
		
		List<Tpersona> lsTpersonas=this.findByHql(hql, values);
		
		if (lsTpersonas!=null){
			if (!lsTpersonas.isEmpty()){
				return lsTpersonas.get(0);
			}
		}
		
		return null;
	}

	@Override
	public void updatePersona(Tpersona tpersona) {
		// TODO Auto-generated method stub
		this.update(tpersona);
	}

}
